
//#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct student {
    int id;
    char name[20];
    int score;
};

int main() {
    FILE *fp;
    struct student stu;

    // 以二进制方式打开文件
    if ((fp = fopen("file.bin", "rb+")) == NULL) {
        fprintf(stderr, "Can't open file!\n");
        exit(1);
    }

    // 将文件指针移动到第二个学生信息的位置
    if (fseek(fp, sizeof(struct student), SEEK_SET) == 0) {
        // 读取第二个学生的信息
        fread(&stu, sizeof(struct student), 1, fp);

        // 输出原来的学生信息
        printf("Original Student ID: %d\n", stu.id);
        printf("Original Student Name: %s\n", stu.name);
        printf("Original Student Score: %d\n", stu.score);

        // 修改成绩
        stu.score = 90;

        // 将文件指针移动回原来的位置
        if (fseek(fp, -sizeof(struct student), SEEK_CUR) == 0) {
            // 将修改后的学生信息写回文件
            fwrite(&stu, sizeof(struct student), 1, fp);
        }
    }

    // 关闭文件
    fclose(fp);

    return 0;
}

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct student {
    int id;
    char name[20];
    int score;
};

int main() {
    FILE *fp;
    struct student stu;

    // 以二进制方式打开文件
    if ((fp = fopen("file.bin", "rb+")) == NULL) {
        fprintf(stderr, "Can't open file!\n");
        exit(1);
    }

    // 将文件指针移动到第二个学生信息的位置
    if (fseek(fp, sizeof(struct student), SEEK_SET) == 0) {
        // 读取第二个学生的信息
        fread(&stu, sizeof(struct student), 1, fp);

        // 输出原来的学生信息
        printf("Original Student ID: %d\n", stu.id);
        printf("Original Student Name: %s\n", stu.name);
        printf("Original Student Score: %d\n", stu.score);

        // 修改成绩
        stu.score = 90;

        // 将文件指针移动回原来的位置
        if (fseek(fp, -sizeof(struct student), SEEK_CUR) == 0) {
            // 将修改后的学生信息写回文件
            fwrite(&stu, sizeof(struct student), 1, fp);
        }
    }

    // 关闭文件
    fclose(fp);

    return 0;
}
